Many communication systems, for example, but not limited to, optical communication systems, may provide large bandwidths. In order to take advantage of such large bandwidths, non-binary (“M-ary”) digital communication techniques may be desirable. At the same time, error-control coding may be needed to ensure reliable communications. In some cases, modulation and error-control coding may be combined in the form of what has come to be known as “coded modulation,” in which the error-control coding and modulation may be integrated.
Early coded modulation techniques were largely focused on trellis-coded modulation using maximum-likelihood decoding. In trellis-coded modulation, an input data sequence may be used to directly select an encoded symbol in a signal constellation, according to, conceptually speaking, a trellis structure. See, e.g., Biglieri et al., Introduction to Trellis-Coded Modulation with Applications, New York: Macmillan Publishing Company, 1991, pp. 67-73. However, as time has passed, further coded modulation techniques have been developed. For example, block-coding techniques have been adapted to support coded modulation.
One class of codes that may have many desirable characteristics is the class of codes known as low-density parity check (LDPC) codes. Such codes may be characterized in that their parity check matrices (the matrices reflecting the constraint equations of the code, i.e., the combinations of bits for used in decoding) may be sparsely populated, in comparison with non-low-density codes. In other words, in a binary LDPC code, the percentage of 1's in the parity check matrix is low, compared with the percentage of zeros. See, e.g., J. K. Wolf, “An Introduction to Error Correcting Codes, Part 3,” ECE 154 C Presentation Slides, U. of California at San Diego, Spring 2010 (available at circuit.ucsd.edu/˜yhk/ece154c-spr16/pdfs/ErrorCorrectionIII.pdf); see, also, Robert G Gallager, Low Density Parity Check Codes. Monograph, M.I.T. Press. (available, e.g., at www.inference.phy.cam.ac.uk/mackay/gallager/papers/ldpc.pdf). One advantage to this may be that using a message passing decoding algorithm over a sparsely populated parity check matrix may result in good convergence properties and near-optimal performance (noting that optimum performance may correspond to maximum-likelihood decoding; however, maximum-likelihood decoding of LDPC codes is an NP-complete problem and thus impractical, so sub-optimal algorithms must be used in practical systems).
LDPC codes may be of various types, but may generally fall into two classes: block and convolutional. LDPC block codes (LDPC-BC) may be formed in a manner similar to conventional block codes, in which parity check bits may be computed based on combinations of finite blocks of input data bits and may be transmitted with the input data bits. Convolutional code-based LDPC codes (LDPC-CC) may be constructed based on concepts similar to convolutional codes, in which input data bits may be combined to form output bits that are combinations of the input data bits; a difference between block and convolutional codes is that, if the input bits to a convolutional code are considered in terms of blocks, there may be memory in the output bits in that a given output bit may be computed based on input bits from more than one input block (binary convolutional encoders may generally have memory/delay elements and binary adders).
Decoding of LDPC codes may typically be implemented, conceptually, by means of “message passing” algorithms. A message passing algorithm is most often depicted as a trellis of nodes, where the nodes perform computations of various probabilities regarding the bits of the received code symbols; some of the nodes may generally correspond to output bit values, and some of the nodes may correspond to values of the parity checks (i.e., the code symbols (bits), which may represent combinations of the transmitted bit values). The “messages” that are passed may represent various probabilities of output bits taking particular values (1 or 0), based on the information available at the node. This may give rise to iterative decoding schemes based on a potential increase in available information with the processing of more received code symbols. However, because the ideal decoding may involve extremely long numbers of received code symbols, in practice, the number of received code symbols considered prior to making a final decision on an output bit may be limited.
On a further note, while LDPC codes are generally characterized by a lower percentage of ones than zeros in the code's parity check matrix, how low “low-density” means may often be determined heuristically. In particular, the message passing techniques used in decoding LDPC codes may generally be sensitive to cycles that may form in a code diagram with nodes representing bits and other nodes representing checks. Such cycles may form when messages passed from a given bit node or check node end up being propagated back to the same bit node or check node, which may amount to the same information looping within the decoder, which may cause confusion and, in some cases, decoder failure. Therefore, one measure of a maximum density that constitutes a “low-density” code may be a maximum percentage of ones in the parity check matrix such that a message passing decoder does not fail. Again, this may be determined heuristically.
Bit interleaving may be used in conjunction with (binary) LDPC codes. Interleaving may be used to effectively disperse errors in adjacent transmitted bits by “mixing up” the bits. Symbol interleaving, a generalization of bit interleaving, may similarly disperse adjacent transmission errors (although it is noted that if a symbol is formed by multiple bits, one or more of the bits comprising an erroneous symbol may be affected; however, symbol interleaving may still result in some degree of bit error dispersion).
The above techniques may be combined into bit-interleaved coded modulation (BICM), or more generally, interleaved coded modulation (ICM) systems. BICM may use a binary code (i.e., a code the inputs and generates bits), such as an LDPC code, followed by a bit interleaver, and the interleaved bits may then be mapped to modulation symbols. Alternatively, encoded bits (e.g., using an LDPC code) may be mapped into symbols, and the symbols may be interleaved using a symbol interleaver.
One challenge that may arise is using such techniques with higher-order modulation techniques, such as, but not limited to, M-ary quadrature amplitude modulation (M-QAM), e.g., but not limited to the case with M being 8 (8QAM). In particular, the complexity and efficiency (e.g., in terms of amount of processing time needed, number of computations, complexity of connectivity (e.g., number of connections/memory accesses), amount of memory needed, and the like) of decoding/demodulating the ICM symbols using higher-order modulation may be difficult to implement efficiently using known techniques (which mostly address conventional binary, or at most, conventional quaternary (4-ary) transmission systems). Some of the factors behind this may include, e.g., the increased number of bits per symbol and its effects on de-mapping and decoding, in terms of having greater interaction between/among encoded bits (or, in other words, each decoded bit affecting multiple other encoded bits to a higher degree) and the additional hardware and/or computational time to account for this. Thus, it may be desirable to develop techniques that may improve upon the efficiency of known techniques, and which may be amenable to use with other modulation types, which may include higher-order modulation techniques and techniques that may provide improved spectral efficiency, e.g., but not limited to, dual-polarization symbol transmission (which may be useful, e.g., in optical communication systems).